package com.weimob.mcloud.wechatwork.customer.service.user.service;

import com.weimob.mcloud.wechatwork.customer.service.user.base.PageResponse;
import com.weimob.mcloud.wechatwork.customer.service.user.module.bo.sidebar.*;
import com.weimob.mcloud.wechatwork.customer.service.user.module.dto.sidebar.*;
import com.weimob.soa.common.response.SoaResponse;

import java.util.List;

/**
 * 侧边栏相关
 *
 * @Author yu liu  2021/10/25 16:39
 *  * Description
 *  * Version 1.0.0
 */
public interface CustomerSidebarExport {

    /**
     * 侧边栏访问权限
     * @param sidebarCommonDTO
     * @return
     */
    SoaResponse<SidebarAuthBO, ?> getSidebarAuth(SidebarCommonDTO sidebarCommonDTO);

    /**
     * 侧边栏员工访问权限
     *
     * @author jun.liu05
     * @since 1.0
     */
    SoaResponse<SidebarEmployeeAuthBO, ?> getSidebarEmployeeAuth(SidebarCommonDTO sidebarCommonDTO);

    /**
     * 侧边栏查询门店
     * @param sidebarStoreDTO
     * @return
     */
    SoaResponse<SidebarStoreBO, ?> getStoreList(SidebarStoreDTO sidebarStoreDTO);

    /**
     * 侧边栏查询优惠券
     * @param couponsDto
     * @return
     */
    SoaResponse<PageResponse<SidebarCouponBO>, ?> getCoupons(QuerySidebarCouponsDto couponsDto);

    /**
     * 侧边栏查询商品
     * @param sidebarGoodsDTO
     * @return
     */
    SoaResponse<PageResponse<SidebarGoodsBO>, ?> getGoodsList(SidebarGoodsDTO sidebarGoodsDTO);

    /**
     * 侧边栏查询分销商品
     *
     * @author jun.liu05
     * @since 1.0
     */
    SoaResponse<PageResponse<SidebarDistributionGoodsBO>, ?> getDistributionGoodsList(SidebarDistributionGoodsDTO sidebarGoodsDTO);

    /**
     * 侧边栏查询商品筛选项——分组
     * @param goodsClassifyDto
     * @return
     */
    SoaResponse<List<GoodsClassifyBO>, ?> getGoodsClassifyList(GoodsClassifyDto goodsClassifyDto);

    /**
     * 获取短参,该接口由于代码维护困难，所以提供了一个新的接口getShortCodeV2
     * 之后的需求都在getShortCodeV2上维护，如果需要使用短参接口，请自行评估两个接口的差异性，自行抉择
     * 原则上该接口已经废弃
     * @param createUrlDTO
     * @return
     */
    @Deprecated
    SoaResponse<ShortCodeBO, ?> getShortCode(CreateUrlDTO createUrlDTO);

    /**
     * 获取短参链接优化版，补充userId或者orgUserId
     * @param createUrlDTO
     * @return com.weimob.soa.common.response.SoaResponse<com.weimob.mcloud.wechatwork.customer.service.user.module.bo.sidebar.ShortCodeBO,?>
     */
    SoaResponse<ShortCodeBO, ?> getShortCodeV2(CreateUrlDTO createUrlDTO);

    SoaResponse<PmcParamsUrlBO, ?> getPmcParamUrl(CreateUrlDTO createUrlDTO);

    SoaResponse<ShortCodePmcUrlBO, ?> getPmcShortCodeUrl(CreateUrlDTO createUrlDTO);

    /**
     * 短参换详情(解析短参内容)
     *
     * @Author LeoLee
     *
     * @param shortCode
     * @param scene
     * @return
     */
    SoaResponse<ShortCodeParamsInfoBO, ?> getRealParamFronQwzsKey(String shortCode, String scene);

    /**
     * 获取订单列表
     * @param orderListDTO
     * @return
     */
    SoaResponse<PageResponse<OrderBO>, ?> queryOrderList(OrderListDTO orderListDTO);

    /**
     * 获取订单详情
     * @param orderDetailDTO
     * @return
     */
    SoaResponse<OrderBO, ?> queryOrderDetail(OrderDetailDTO orderDetailDTO);
}
